package main

import (
	"fmt"
)

/**
执行用时：4 ms, 在所有 Go 提交中击败了99.36%的用户
内存消耗：4.6 MB, 在所有 Go 提交中击败了53.85%的用户
 */
func insert(a [][]int, b []int) [][]int {

	res := [][]int{}

	k := 0
	for k < len(a) && a[k][1] < b[0] {
		res = append(res, a[k])
		k++
	}

	if k < len(a) {
		b[0] = min(b[0], a[k][0])
		for k < len(a) && a[k][0] <= b[1] {
			b[1] = max(b[1], a[k][1])
			k++
		}
	}
	res = append(res, b)

	for k < len(a) {
		res = append(res, a[k])
		k++
	}

	return res
}

// 求最大值
func max(a int, b int) int {
	if a > b {
		return a
	} else {
		return b
	}
}

// 求最小值
func min(a int, b int) int {
	if a > b {
		return b
	} else {
		return a
	}
}

func main() {

	a := [][]int{{1, 2}, {3, 5}, {6, 7}, {8, 10}, {12, 16}}
	b := []int{4, 8}
	fmt.Println(insert(a, b))
}
